import Mock from 'mockjs'

class LoginMock {
    /**
     * 登录操作
     * @param {Object} option body, type, url
     * @returns 
     */
    login(option) {
        console.log('login==',option)
        let param = {}
        if (option.body instanceof FormData) {
            option.body.forEach((v, k) => {
                param[k] = v;
            })
        } else {
            param = JSON.parse(option.body);
        }
        console.log('option', option, 'param',param);
        if (!param.username || param.username.trim().length == 0) {
            return this.stdMessage(false, '用户名无效');
        }
        if (!param.password || param.password.trim().length == 0) {
            return this.stdMessage(false, '密码无效');
        }
        if (param.username != 'admin') {
            return this.stdMessage(false, '用户不存在');
        }

        // let status = Math.random() > 0.5 ? 1 : 0;
        // let time = parseInt(new Date().getTime() / 1000) + 2 * 3600;
        // 返回标准格式
        return Mock.mock({
            success: true,
            message: '@ctitle',
            code: 200,
            'data': {
                'id': '@id', // 随机编号
                'username': '@string("lower", 5)', // 5位小写字符
                'realname': '@cname', // 中文姓名
                'email': '@email',
                'mobile': /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/,
                'blance': '@float(0,100,1,5)',
                'score': '@integer(100,1000)',
                'address': '',
                'region': '@region', // 区域（华北、华南）
                'province': '@province', // 省份
                'ciry': '@city(true)', // 城市
                'country': '@county(true)', // 区镇
                'street': '@ctitle(6,10)',
                'zip': '@zip', // 邮编
                'gender': '@integer(0,2)',
                'age': '@integer(18,100)',
                'login_ip': '@ip',
                'login_count': '@integer(0,100)',
                'avatar': '@image("200x100", "#894FC4", "#FFF", "png", "描述!")',
                'created_time': '@datetime("yyyy-MM-dd HH:mm:ss")',
                'date_ymd': '@date("yyyy-MM-dd")',
                'token':'@guid',
            },
        })
    }

    // 解析参数
    parseOption(option) {
        // option= {url:'/api/read?id=1', type:'GET', data:null}
        let param = {}
        if (option.url.indexOf('?') > -1) {
            new URLSearchParams(option.url.substring(option.url.indexOf('?') + 1)).forEach((v, k) => {
                param[k] = v;
            })
        }
        if (option.body) {
            if (option.body instanceof FormData) {
                option.body.forEach((v, k) => {
                    param[k] = v;
                })
            } else {
                param = JSON.parse(option.body);
            }
        }
        return param;
    }

    // 返回标准消息对象
    stdMessage(success, message, data = '', code = 0) {
        return {
            success: success,
            message: message,
            data: data,
            code: code,
        }
    }
}

export default new LoginMock;